签名说明
由于 XT 需要为第三方平台提供一些开放接口,因此需要考虑数据安全问题。
例如:
- 数据是否被篡改
- 数据是否已过期
- 数据能否重复提交
- 接口的访问频率
其中,数据是否被篡改是最重要的问题。
步骤
-
Appkey & Secretkey 首先在用户中心申请
appkey
和secretkey
,每个用户的密钥都不同。 -
Timestamp 添加
timestamp
。- 其值应为发送请求时的 unix 时间戳(毫秒)。
- 数据的时间基于此值计算。
-
Signature 添加
signature
,其值通过签名算法规则获得。 -
RecvWindow 添加
recvwindow
(定义请求的有效时间)。-
有效时间固定为某个值。
-
当收到请求时,服务器会检查:
serverTime - timestamp < recvwindow
-
任何超过 5000 毫秒的请求都无效。
-
如果客户端的时间戳比服务器时间提前超过 1 秒,请求无效。
注意: 网络条件并非总是 100% 可靠。这就是我们提供
recvWindow
参数的原因:- 对于高频交易,调整
recvWindow
以满足时效性需求。 - 不建议使用超过 5 秒的 RecvWindow。
-
-
Algorithm 添加
algorithms
(签名方法)。- 推荐:
HmacSHA256
- 支持的算法:
- HmacMD5
- HmacSHA1
- HmacSHA224
- HmacSHA256(推荐)
- HmacSHA384
- HmacSHA512
- 推荐:
参数示例
名称 | 必填 | 示例 | 描述 |
---|---|---|---|
validate-appkey | ✅ | dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83 | |
validate-timestamp | ✅ | 1641446237201 | |
validate-signature | ✅ | 0a7d0b5e802eb5e52ac0cfcd6311b0faba6e2503a9a8d1e2364b38617877574d | |
validate-recvwindow | ✅ | 5000(毫秒) | |
validate-algorithms | ✅ | HmacSHA256 | HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512 默认:HmacSHA256 |
validate-signversion | ❌ | 1.0 | 保留字段,签名版本号 |